#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>
#include<stdlib.h>

//double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size) {
//    int flag = (nums1Size + nums2Size) / 2;
//    int* cur1 = nums1;
//    int* cur2 = nums2;
//    int ret = 0;
//    int count = 0;
//    while (1)
//    {
//        if (*cur1 < *cur2)
//        {
//            ret = *cur1;
//            cur1++;
//        }
//        else
//        {
//            ret = *cur2;
//            cur2++;
//        }
//        count++;
//        if (count == flag + 1)
//        {
//            break;
//        }
//    }
//    return ret;
//}

double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size) {
    int* arr = (int*)malloc((nums1Size + nums2Size) * sizeof(int));
    int pos = 0;
    int pos1 = 0;
    int pos2 = 0;
    while (pos1<nums1Size && pos2<nums2Size)
    {
        if (*nums1 < *nums2)
        {
            arr[pos++] = *nums1;
            nums1++;
            pos1++;
        }
        else
        {
            arr[pos++] = *nums2;
            nums2++;
            pos2++;
        }
    }
    if (pos1 == nums1Size || pos2 == nums2Size)
    {
        for (int i = pos; i < nums1Size + nums2Size; i++)
        {
            arr[i] = pos1 == nums1Size ? *nums2++ : *nums1++;
        }
    }
    if ((nums1Size + nums2Size) % 2 != 0)
    {
        return arr[(nums1Size + nums2Size) / 2];
    }
    else
    {
        return (arr[(nums1Size + nums2Size) / 2 - 1] + arr[(nums1Size + nums2Size) / 2]) / 2.0;
    }
}

int main()
{
    int arr1[] = { 1,2 };
    int arr2[] = { 3,4 };
    double ret = findMedianSortedArrays(arr1,2, arr2,2);
    printf("%.5lf", ret);

    return 0;
}